package com.heyige.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.heyige.dto.SensitiveWordDto;

import java.util.List;

public interface SensitiveWordService {

    /**
     * 检查文本是否包含敏感词
     *
     * @param text 要检查的文本
     * @return 检查结果
     */
    SensitiveWordDto.CheckResult checkText(String text);

    /**
     * 批量检查文本是否包含敏感词
     *
     * @param texts 要检查的文本列表
     * @return 检查结果列表
     */
    List<SensitiveWordDto.CheckResult> checkTexts(List<String> texts);

    /**
     * 添加敏感词
     *
     * @param request 添加请求
     * @return 敏感词信息
     */
    SensitiveWordDto.SensitiveWordResponse addSensitiveWord(SensitiveWordDto.AddRequest request);

    /**
     * 更新敏感词
     *
     * @param id      敏感词ID
     * @param request 更新请求
     * @return 敏感词信息
     */
    SensitiveWordDto.SensitiveWordResponse updateSensitiveWord(Long id, SensitiveWordDto.UpdateRequest request);

    /**
     * 删除敏感词
     *
     * @param id 敏感词ID
     */
    void deleteSensitiveWord(Long id);

    /**
     * 获取敏感词列表
     *
     * @param page 分页参数
     * @param size 分页参数
     * @return 敏感词列表
     */
    IPage<SensitiveWordDto.SensitiveWordResponse> getSensitiveWords(Integer page, Integer size);

    /**
     * 根据分类获取敏感词列表
     *
     * @param category 分类
     * @param page     分页参数
     * @return 敏感词列表
     */
    IPage<SensitiveWordDto.SensitiveWordResponse> getSensitiveWordsByCategory(String category, Integer page, Integer size);

    /**
     * 获取敏感词详情
     *
     * @param id 敏感词ID
     * @return 敏感词信息
     */
    SensitiveWordDto.SensitiveWordResponse getSensitiveWord(Long id);

    /**
     * 启用/禁用敏感词
     *
     * @param id       敏感词ID
     * @param isActive 是否启用
     */
    void setSensitiveWordActive(Long id, Boolean isActive);

    /**
     * 批量导入敏感词
     *
     * @param request 导入请求
     * @return 导入结果
     */
    SensitiveWordDto.ImportResult importSensitiveWords(SensitiveWordDto.ImportRequest request);

}